package leedcode_path.stringleedcode;


public class 反转字符串2 {
    /*
    * 给定一个字符串 s 和一个整数 k，从字符串开头算起，每计数至 2k 个字符，就反转这 2k 字符中的前 k 个字符。

如果剩余字符少于 k 个，则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。


示例 1：

输入：s = "abcdefg", k = 2
输出："bacdfeg"
示例 2：

输入：s = "abcd", k = 2
输出："bacd"*/
    public String reverseStr(String s, int k) {
        char[] res=s.toCharArray();
        for (int i = 0; i < res.length; i+=2*k) {
            if (i+k<=res.length){
                reverse(res,i,i+k-1);
            }else {
                reverse(res,i,res.length-1);
            }
        }
        return new String(res);
    }
    public void reverse(char[] ch,int i,int j){
//        左闭右闭
        while (i<j){
            char temp=ch[i];
            ch[i]=ch[j];
            ch[j]=temp;
        }
    }
}
